export {}
//对象
const foo: object = function() {}
const obj: {foo: number} = {foo: 1}

//数组
const arr1:Array<number>=[1,2]
const arr2:number[]=[2,3]

function sum(...args:number[]){
    return args.reduce((perv,crrrent)=>perv+crrrent,0)
}
// sum(1,2,'foo')会报错

//元组
const tuple:[number,string]=[17,'caozy']
const [age,name]=tuple

//枚举类型 
// 数字自增长
// enum postStatus{
//     d=0,
//     u,
//     p
// }
enum postStatus{
    d='a',
    u='b',
    p='c'
}
const post ={
    title:'hello',
    text:'ts is atyped superset of js',
    status:postStatus.d
}

//函数类型
//?表示可选参数 可选参数必须在最后面
function fn (a:string,b?:string,...rest:number[]):string{
    return 'foo'
}
const fns = fn;

//任意类型
const anys:any=[]

//隐式类型推断
let ages = 18;
//  ages='ages' 会报错
let foos  //这时候表示是一个any类型的变量

//类型断言
const  nums=[1,2,3,4]
const res =nums.find(i=>i>0)
const s =res as number * <number>res